// 引入下载的@reduxjs/toolkit包,快捷创建action creator函数、action类型字符串和一个reducer函数
// createAsyncThunk是包提供的异步action的方法
import {
    createSlice,
    createAsyncThunk
} from '@reduxjs/toolkit'

// 引入请求电影数据的axios
import { movieRequest } from "../../api";

//我们使用createAsyncThunk方法来创建异步action
//createAsyncThunk接受两个参数,第一个参数是type的值,需要我们自己设置
// 第二个参数是回调函数,回调函数就是异步action的函数
export  const getMovieAction =createAsyncThunk('movie/getMovieList',async ()=>{
    // 请求电影数据,后面代码都是异步的
    const result = await movieRequest()
    //在这个函数中return的值，就是在thunk中间件中再次disptch的值
    return result.data.data.list
})

// 配置reducer函数
const movieSlice=createSlice({
    name:'move',
    initialState:{
        movieList:[]
    },

    reducers:{

    },

    //异步action的处理,需要书写额外的reducer处理,不能写在reduers中,因为reducers会创建一个对应的action
    extraReducers: {
        [getMovieAction.fulfilled](prev, action) {
          console.log("异步action成功--getMovieAction");
          console.log(prev, action);
          prev.movieList = action.payload
        }
    }
})

export default movieSlice.reducer;

